package JavaCode.linked_list.conclusion;

import JavaCode.linked_list.ListNode;

public class RotateRight {
    public ListNode rotateRight(ListNode head, int k) {
        if(k==0||head==null||head.next==null)return head;
        int size=0;
        ListNode p=head;
        ListNode tail=null;
        while (p!=null)
        {
            size++;
            if(p.next==null)tail=p;
            p=p.next;
        }
        if(k%size==0) return head;
        p=head;
        System.out.println(size);
        for(int i=0;i<size-k%size;i++)
        {
            p=p.next;
        }
        tail.next=head;
        head=p.next;
        p.next=null;
        return head;
    }
}
/**
 * https://leetcode-cn.com/explore/learn/card/linked-list/197/conclusion/767/
 * 旋转链表
 * 给定一个链表，旋转链表，将链表每个节点向右移动 k 个位置，其中 k 是非负数。
 *
 * 示例 1:
 *
 * 输入: 1->2->3->4->5->NULL, k = 2
 * 输出: 4->5->1->2->3->NULL
 * 解释:
 * 向右旋转 1 步: 5->1->2->3->4->NULL
 * 向右旋转 2 步: 4->5->1->2->3->NULL
 * 示例 2:
 *
 * 输入: 0->1->2->NULL, k = 4
 * 输出: 2->0->1->NULL
 * 解释:
 * 向右旋转 1 步: 2->0->1->NULL
 * 向右旋转 2 步: 1->2->0->NULL
 * 向右旋转 3 步: 0->1->2->NULL
 * 向右旋转 4 步: 2->0->1->NULL
 */
